package com.ruoyi.mapper.production;

import com.ruoyi.domain.production.MesProductionReturn;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 生产退料单Mapper接口
 * 
 * @author ruoyi
 */
@Mapper
public interface MesProductionReturnMapper
{
    /**
     * 查询生产退料单
     * 
     * @param returnId 生产退料单主键
     * @return 生产退料单
     */
    public MesProductionReturn selectMesProductionReturnByReturnId(Long returnId);

    /**
     * 查询生产退料单列表
     * 
     * @param mesProductionReturn 生产退料单
     * @return 生产退料单集合
     */
    public List<MesProductionReturn> selectMesProductionReturnList(MesProductionReturn mesProductionReturn);

    /**
     * 校验退料单编号是否唯一
     * 
     * @param returnCode 退料单编号
     * @param returnId 退料单ID（编辑时排除）
     * @return 退料单信息
     */
    MesProductionReturn checkReturnCodeUnique(@Param("returnCode") String returnCode, @Param("returnId") Long returnId);

    /**
     * 根据工单ID查询退料单列表
     * 
     * @param workOrderId 工单ID
     * @return 退料单集合
     */
    List<MesProductionReturn> selectReturnListByWorkOrderId(@Param("workOrderId") Long workOrderId);

    /**
     * 根据领料单ID查询退料单列表
     * 
     * @param pickingId 领料单ID
     * @return 退料单集合
     */
    List<MesProductionReturn> selectReturnListByPickingId(@Param("pickingId") Long pickingId);

    /**
     * 根据仓库ID查询退料单列表
     * 
     * @param warehouseId 仓库ID
     * @return 退料单集合
     */
    List<MesProductionReturn> selectReturnListByWarehouseId(@Param("warehouseId") Long warehouseId);

    /**
     * 新增生产退料单
     * 
     * @param mesProductionReturn 生产退料单
     * @return 结果
     */
    public int insertMesProductionReturn(MesProductionReturn mesProductionReturn);

    /**
     * 修改生产退料单
     * 
     * @param mesProductionReturn 生产退料单
     * @return 结果
     */
    public int updateMesProductionReturn(MesProductionReturn mesProductionReturn);

    /**
     * 删除生产退料单
     * 
     * @param returnId 生产退料单主键
     * @return 结果
     */
    public int deleteMesProductionReturnByReturnId(Long returnId);

    /**
     * 批量删除生产退料单
     * 
     * @param returnIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMesProductionReturnByReturnIds(Long[] returnIds);
}